home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
guilib3
/
inc
/
dta.h
< prev
next >
Wrap
C/C++ Source or Header
|
1993-11-30
|
5KB
|
154 lines
/* :*****************************************************************
: "dta.h" : system“Pride”DTA ライブラリ
:*****************************************************************
*/
#ifndef _DTA_H
#define _DTA_H
#ifndef _SPDEFS_H
# include "spdefs.h"
#endif
#ifdef FAR
# undef FAR
#endif
#define FAR _far
#define DTA_ID_LEN (12)
extern CONST char DTA_ID[]; /* "PRIDE .DTA" */
#define DTA_NAME_LEN (16)
#define DTA_MAX_CLUSTER (256)
#define DTA_STT_NOTHING (0)
#define DTA_STT_PARENT (1)
#define DTA_STT_CHILD (2)
#define DTA_STT_SWAPOUT (0x80)
#define DTA_STTBIT_FILE (0x80) /* ファイル上にスワップアウト */
/* DTA SLOT 構造体 */
typedef struct
{ char name[DTA_NAME_LEN];
UCHAR stt; /* 状態 */
UCHAR att; /* 属性 */
USHORT id; /* リザーブ */
size_t offset; /* dtaPtr からのオフセット */
size_t size; /* サイズ */
size_t topCluster; /* 先頭クラスタ */
} DTASLOT_T;
/* DTA 領域ヘッダー部構造体 */
typedef struct
{ char id[14];
USHORT ver; /* バージョン */
size_t maxSiz;
size_t topOfs;
int ret;
USHORT bytesPerCluster;
USHORT clusterMax; /* レコード数 */
UCHAR flagTbl[DTA_MAX_CLUSTER/8];
int slotMax;
DTASLOT_T slot[1]; /* DTA スロット格納領域 */
} DTAHEAD_T;
typedef struct
{
size_t siz; /* サイズ */
int mode;
char rsv[128-8]; /* リザーブ */
char path[128]; /* ファイル名 */
} DTASWAP_T;
#define DTA_SWAPMODE_CLEAR (0x0001)
/* レコード管理構造体 */
typedef struct _dta_recode_t
{
struct _dta_recode_t *next;
DTASLOT_T *dtaSlot;
int stt;
size_t siz;
void *ptr;
char p[1];
} DTARECODE_T;
#define DTA_RECODE_HASH_MAX (16)
/* DTA 領域の管理構造体 */
typedef struct
{
DTAHEAD_T *head;
FAR void *dtaPtr;
DTARECODE_T *recodeHash[DTA_RECODE_HASH_MAX];
UCHAR stt; /* 状態 */
UCHAR att; /* 属性 */
SHORT cd;
} DTACTRL_T;
#define DTA_BYTES_PER_CLUSTER (256) /* クラスタの大きさ */
#define DTA_HEAD_SIZ (sizeof(DTAHEAD_T) - sizeof(DTASLOT_T))
#define DTA_HEAD_AND_SLOT_SIZE(head) (DTA_HEAD_SIZ + (head)->slotMax * sizeof(DTASLOT_T))
/* "dta011.c" ------------------------------------------------*/
extern DTACTRL_T *DTA_open(void); /* 親プロセス用 */
/* "dta012.c" ------------------------------------------------*/
extern int DTA_isAtPcl(void); /* 子プロセス用 */
extern DTACTRL_T *DTA_openCheck(void);
/* "dta013.c" ------------------------------------------------*/
extern void DTA_readData( DTACTRL_T *dtaCtrl, void *buf, size_t offset, size_t siz );
/* "dta014.c" ------------------------------------------------*/
extern void DTA_writeData( DTACTRL_T *dtaCtrl, void *buf, size_t offset, size_t siz );
/* "dta015.c" ------------------------------------------------*/
extern int DTA_freeCtrl( DTACTRL_T *dtaCtrl );
/* "dta016.c" ------------------------------------------------*/
extern int DTA_resetCtrl( DTACTRL_T *dtaCtrl );
/* "dta017.c" ------------------------------------------------*/
extern int DTA_dump( CONST char *fn ); /* for DEBUG */
/* "dta018.c" ------------------------------------------------*/
extern int DTA_flush( DTACTRL_T *dtaCtrl );
/* "dta020.c" ------------------------------------------------*/
extern int DTA_putHeader( DTACTRL_T *dtaCtrl );
/* "dta021.c" ------------------------------------------------*/
extern int DTA_getHeader( DTACTRL_T *dtaCtrl );
/* "dta030.c" ------------------------------------------------*/
extern DTASLOT_T *DTA_getSlot( DTACTRL_T *dtaCtrl, CONST char *name );
/* "dta031.c" ------------------------------------------------*/
extern DTASLOT_T *DTA_openSlot( DTACTRL_T *dtaCtrl, CONST char *name, size_t siz );
/* "dta032.c" ------------------------------------------------*/
extern int DTA_clearSlot( DTACTRL_T *dtaCtrl, DTASLOT_T *dtaSlot );
/* "dta033.c" ------------------------------------------------*/
extern int DTA_removeSlot( DTACTRL_T *dtaCtrl, CONST char *name );
/* "dta034.c" ------------------------------------------------*/
extern size_t DTA_getFreeCluster( DTACTRL_T *dtaCtrl );
/*==================================================================*/
/* "dta040.c" ------------------------------------------------*/
extern DTARECODE_T *DTA_createRecode( DTACTRL_T *dtaCtrl, CONST char *name, size_t siz );
extern DTARECODE_T *DTA_openRecode( DTACTRL_T *dtaCtrl, CONST char *name );
extern int DTA_closeRecode( DTACTRL_T *dtaCtrl, DTARECODE_T *dtaRecode );
/* "dta041.c" ------------------------------------------------*/
extern int DTA_flushRecode( DTACTRL_T *dtaCtrl, DTARECODE_T *dtaRecode );
/* "dta042.c" ------------------------------------------------*/
extern int DTA_freeAllRecode( DTACTRL_T *dtaCtrl );
/* "dta043.c" ------------------------------------------------*/
extern int DTA_readRecode( DTACTRL_T *dtaCtrl, DTARECODE_T *dtaRecode );
#endif